home *** CD-ROM | disk | FTP | other *** search
- /*-----------------------------------
- * This program was used to test the
- * add1 and add2 functions
- *-----------------------------------*/
- #include <stdio.h>
-
- typedef struct NODE* LINK;
-
- struct NODE {
- int info;
- LINK left;
- LINK right;
- };
-
- main()
- {
- LINK rootptr1=NULL,rootptr2=NULL;
- int x;
-
- printf("Enter integers terminated \
- with ctrl z\n");
- /* Create tree */
- while (scanf("%d",&x) == 1) {
- add1(&rootptr1,x);
- add2(&rootptr2,x);
- }
- printf("Using add1\n");
- recurse_traverse(rootptr1); /* Traverse tree */
- printf("Using add2\n");
- recurse_traverse(rootptr2);
- }
- recurse_traverse(rootptr) LINK rootptr;
- {
- if (rootptr != NULL) { /* Is tree null? */
- recurse_traverse(rootptr -> left); /* Recurse */
- printf("%d\n",rootptr -> info);
- recurse_traverse(rootptr -> right); /* Recurse */
- }
- }
- add1(rootpp,val) LINK *rootpp;int val;
- {
- LINK newnode,current,previous;
-
- /* Create a new node */
- newnode = (LINK) malloc(sizeof(struct NODE));
- newnode->info = val;
- newnode->left = NULL;
- newnode->right = NULL;
- current = *rootpp;
- previous = NULL;
- while (current != NULL) { /* Search for leaf */
- previous = current;
- if (val < current->info)
- current = current->left;
- else
- current = current->right;
- }
- if (previous == NULL) /* Null tree? */
- *rootpp = newnode; /* Node becomes tree */
- else
- if (val < previous->info) /* Add left/right? */
- previous->left = newnode; /* Add to left */
- else
- previous->right = newnode; /* Add to right */
-
- }
- add2(pp,val) LINK *pp; int val;
- {
- LINK newnode;
-
- /* Create a new node */
- newnode = (LINK) malloc(sizeof(struct NODE));
- newnode->info = val;
- newnode->left = NULL;
- newnode->right = NULL;
- while (*pp != NULL) { /* Search for leaf */
- if (val < (*pp)->info)
- pp = &(*pp)->left; /* Move pp */
- else
- pp = &(*pp)->right; /* Move pp */
- }
- *pp = newnode; /* Add node to tree */
- }
-
-